package com.ruoyi.system.service;

import java.util.List;
import java.util.Objects;

import com.ruoyi.system.billiards.domian.request.EightBallScoreReq;
import com.ruoyi.system.billiards.domian.response.GameInfo;
import com.ruoyi.system.domain.BilliardsGame;
import com.ruoyi.system.domain.vo.BilliardsGameVo;

/**
 * 比赛记录Service接口
 *
 * @author ruoyi
 * @date 2024-12-11
 */
public interface IBilliardsGameService {
    /**
     * 查询比赛记录
     *
     * @param gameId 比赛记录主键
     * @return 比赛记录
     */
    public BilliardsGame selectBilliardsGameByGameId(Long gameId);

    /**
     * 查询比赛记录列表
     *
     * @param billiardsGame 比赛记录
     * @return 比赛记录集合
     */
    public List<BilliardsGame> selectBilliardsGameList(BilliardsGame billiardsGame);

    /**
     * 新增比赛记录
     *
     * @param billiardsGame 比赛记录
     * @return 结果
     */
    public BilliardsGame insertBilliardsGame(BilliardsGame billiardsGame);

    /**
     * 修改比赛记录
     *
     * @param billiardsGame 比赛记录
     * @return 结果
     */
    public int updateBilliardsGame(BilliardsGame billiardsGame);

    /**
     * 批量删除比赛记录
     *
     * @param gameIds 需要删除的比赛记录主键集合
     * @return 结果
     */
    public int deleteBilliardsGameByGameIds(Long[] gameIds);

    /**
     * 删除比赛记录信息
     *
     * @param gameId 比赛记录主键
     * @return 结果
     */
    public int deleteBilliardsGameByGameId(Long gameId);

    BilliardsGame selectCurGame(Long memberId, String gameType);

    void joinGame(Long gameId, Long memberId);

    GameInfo gameDetail(Long gameId);

    void score(EightBallScoreReq eightBallScoreReq);

    void end(Long gameId);

    List<BilliardsGameVo> findByStatus(String status);

    void back(Long gameId);

    List<BilliardsGameVo> myGames(Long memberId);
}